Skip to content

fix: Build warnings and compatibility issues across Android and MAUI (.NET) SDKs.#439

Merged
abelonogov-ld merged 12 commits into
mainfrom
andrey/maui-warnings
Mar 27, 2026
Merged

fix: Build warnings and compatibility issues across Android and MAUI (.NET) SDKs.#439
abelonogov-ld merged 12 commits into
mainfrom
andrey/maui-warnings

Conversation

@abelonogov-ld
Copy link
Copy Markdown
Contributor

@abelonogov-ld abelonogov-ld commented Mar 27, 2026

Summary

Fix build warnings and compatibility issues across Android and MAUI (.NET) SDKs, upgrade Dokka to 2.1.0, and make GeckoView lazy-loaded in the E2E app.

Changes

Android SDK (observability-android)

  • Upgrade Dokka 2.0.0 → 2.1.0: Migrated to the V2 plugin mode (V2EnabledWithHelpers) and adopted the new dokka { } DSL, replacing the deprecated tasks.dokkaJavadoc configuration. Added dokka-javadoc plugin.
  • Replace deprecated kotlinOptions with kotlin { compilerOptions { } }: Applies to both observability-android and mobile-dotnet/android/native/LDObserve Gradle build scripts.
  • C native library adjustments: Bumped compiler optimization from -O2 to -O3; added -Wl,-z,max-page-size=16384 linker option to support Android 16KB page-size devices.

MAUI / .NET SDK (mobile-dotnet)

  • Exclude LD Client SDK doc content files: Added ExcludeAssets="contentFiles" to the LaunchDarkly.ClientSdk PackageReference in both LDObservability.csproj and LDObservability.Fat.csproj to prevent the LD SDK's content files from being included in the output.
  • Fix deprecated Java boxing constructors: Replaced new Java.Lang.Boolean(b), new Java.Lang.Integer(i), etc. with Java.Lang.Boolean.ValueOf(b), Java.Lang.Integer.ValueOf(i), etc. in DictionaryTypeConverters.cs to eliminate deprecation warnings.
  • Fix nullable value type in dictionaries: Changed IDictionary<string, object>? to IDictionary<string, object?>? in ToJavaDictionary to properly handle nullable attribute values.
  • Remove unbindable Kotlin companion field: Added a remove-node transform in Metadata.xml to suppress binding warning BG8400 for LDObserveBridgeAdapter.Companion.

E2E Android App

  • Lazy-load GeckoView: GeckoView instances are no longer eagerly created — they are loaded on tap. This avoids crashes on emulators/CI where GeckoEngine is unavailable. Applies to both Compose (LazyGeckoViewItem) and XML (setupLazyGeckoView) activities.
  • Layout restructure: WebViews remain in a scrollable section; GeckoViews are placed outside the scroll area as fixed-height, tap-to-load containers.
  • Add android:extractNativeLibs="true" to AndroidManifest.xml.

Note

Medium Risk
Medium risk due to build/packaging and native build flag changes (Dokka upgrade, Kotlin compiler config, CMake linker options, and .NET binding transforms) that could affect release artifacts, plus UI behavior changes for GeckoView loading.

Overview
Improves build compatibility across the Android and MAUI (.NET) SDKs by upgrading Dokka to 2.1.0 (switching to the new dokka {} DSL / V2 plugin mode) and modernizing Kotlin Gradle config to kotlin { compilerOptions { ... } }.

Adjusts packaging/binding behavior in the .NET Android binding and observability projects by suppressing additional binding warnings, removing an unbindable Kotlin Companion field via Metadata.xml, excluding LaunchDarkly.ClientSdk contentFiles, and tightening Android JNI marshalling helpers (nullable attribute values and ValueOf boxing).

Updates the E2E Android app to lazy-load GeckoView on tap (Compose and XML), restructures the XML layout to keep WebViews scrollable while GeckoViews sit in fixed containers, adds android:extractNativeLibs="true", and tweaks the native tile_hash build to -O3 plus a 16KB page-size linker option.

Written by Cursor Bugbot for commit ae9715c. This will update automatically on new commits. Configure here.

@abelonogov-ld abelonogov-ld requested a review from a team as a code owner March 27, 2026 16:52
Comment thread e2e/android/app/src/main/res/layout/activity_webview.xml Dismissed
@abelonogov-ld abelonogov-ld changed the title Andrey/maui warnings fix: Fix build warnings and compatibility issues across Android and MAUI (.NET) SDKs. Mar 27, 2026
@abelonogov-ld abelonogov-ld changed the title fix: Fix build warnings and compatibility issues across Android and MAUI (.NET) SDKs. fix: Build warnings and compatibility issues across Android and MAUI (.NET) SDKs. Mar 27, 2026
@abelonogov-ld abelonogov-ld merged commit 47c4640 into main Mar 27, 2026
24 checks passed
@abelonogov-ld abelonogov-ld deleted the andrey/maui-warnings branch March 27, 2026 18:35
abelonogov-ld added a commit that referenced this pull request Mar 27, 2026
* main:
  fix: Build warnings and compatibility issues across Android and MAUI (.NET) SDKs. (#439)
  feat(observability-ruby): publish Ruby observability plugin gem (#413)
  ci: fix oidc publishing (#441)
  ci: switch to OIDC npm publishing (#438)

# Conflicts:
#	sdk/@launchdarkly/observability-android/lib/src/main/cpp/CMakeLists.txt
abelonogov-ld pushed a commit that referenced this pull request Mar 27, 2026
🤖 I have created a release *beep* *boop*
---


<details><summary>launchdarkly-observability-android: 0.34.0</summary>

##
[0.34.0](launchdarkly-observability-android-0.33.0...launchdarkly-observability-android-0.34.0)
(2026-03-27)


### Features

* o3 level optimization for image diffing
([#443](#443))
([9045142](9045142))


### Bug Fixes

* Build warnings and compatibility issues across Android and MAUI (.NET)
SDKs.
([#439](#439))
([47c4640](47c4640))
</details>

<details><summary>launchdarkly-observability-ruby: 0.2.0</summary>

##
[0.2.0](launchdarkly-observability-ruby-0.1.0...launchdarkly-observability-ruby/0.2.0)
(2026-03-27)


### Features

* **@launchdarkly/session-replay-react-native:** use cocoapods for
native session replay
([#434](#434))
([41988e1](41988e1))
* **observability-ruby:** publish Ruby observability plugin gem
([#413](#413))
([569a7b4](569a7b4))
* ruby observability plugin
([#360](#360))
([79dc8dd](79dc8dd))


### Bug Fixes

* structured stacktrace capture in Ruby observability plugin
([#427](#427))
([1dae61e](1dae61e))
</details>

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Low Risk**
> Low risk release-metadata update (version numbers, changelogs, and
provenance docs) with no functional code changes in this diff.
> 
> **Overview**
> Updates release metadata to cut new SDK versions:
`@launchdarkly/observability-android` from `0.33.0` to `0.34.0` and
`@launchdarkly/observability-ruby` from `0.1.0` to `0.2.0` (including
manifest/version files).
> 
> Adds the corresponding `CHANGELOG.md` entries and bumps the Ruby
`PROVENANCE.md` example version to match the new release.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
4488f03. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants